SQlite源码分析

页面缓冲管理

       页面调度程序是唯一访问(通过OS接口实现)本地数据库和日志文件的模块。但是它既不解释数据库的内容,也不自行更改内容。(页面调度程序可能更改文件头记录的信息,如:更改页面引用次数。)它采用通常的随机访问/面向字节的文件系统操作,并且把它们抽象为一个用于和数据库文件协同工作的随机访问的基于页的系统。并定义了一个使用简单,独立于文件系统的接口来访问数据库文件的页面。B+树模块总是使用页面调度程序来访问数据库,而非直接访问任何数据库或日志文件。它把数据库文件看成了一个(大小均匀的)页面的逻辑阵列。
       数据库(除了内存数据库)通常以常规的本地文件形式驻留在硬盘等外部存储设备上。当SQLite需要一个数据项,它将从数据库文件中把需要的数据项读入内存中,并在内存中操作它,同时也可以,将它写回到文件中。
       通常,数据库和可用内存相比是非常庞大的。因为可用的内存是有限的,只有一部分的内存被用来存储来自数据库文件的一(微小的)小部分数据。这部分存储内存空间通常被称为一个数据库缓存或者数据缓冲区。在SQLite的中,称为页缓存。页面调度程序则是许多机制(如cache)的缓存管理器。